$(function() {
	// 渲染选择下拉框标签样式

	sys.selectpicker({
		id : 'orgStatus', // select的id
		url : rootPath + "/dict/listKeyMapEntites", // 请求数据的远程地址
		param : {
			keyType : 'status'
		}, // 过滤参数
		// defaultValue:{},
		valueField : 'keyValue',
		textField : 'keyIntro',
		width : '200px'
	});

	// 初始化左侧组织架构树
	orgTree.init();
	// 初始化组织架构菜单树
	orgTreeMenu.init();
	// 选择上级组织
	$(".dropDownTreeMenu").on("click", function() {
		orgTreeMenu.showTreeMenu();
	});
	// 编辑按钮点击事件
	$("#btnEdit").on("click", function() {
		$("#ajaxForm").submit();
		return false;
	});
	$("#btnDelete").on("click", function() {
		doDelOrg();
	});

	// 编辑表单校验
	$("#ajaxForm").validate({
		rules : {
			orgName : {
				required : true,
				minlength : 2,
				maxlength : 10
			}
		},
		messages : {
			orgName : {
				required : '请填写组织名称',
				minlength : '账号至少2-10个字符',
				maxlength : '账号至少2-10个字符'
			}
		},
		errorPlacement : function(error, element) { // 错误信息位置设置方法
			error.insertAfter(element);
		},
		submitHandler : function(form) {
			if (!$(form).valid()) {
				return false;
			}
			// 主键
			var orgId = $("#orgId").val();
			// 组织编码
			var parentId = $("#parentId").val();
			// 组织名称
			var orgName = $("#orgName").val();
			// 状态
			var orgStatus = $("#orgStatus").val();
			// 部门主管
			var deptHead = $("#deptHead").val();
			// 部门分管领导
			var deptLeader = $("#deptLeader").val();
			// 部门管理员
			var deptAdministrator = $("#deptAdministrator").val();

			$.ajax({
				dataType : "json",
				type : 'POST',
				data : {
					id : orgId,
					orgName : orgName,
					parentId : parentId,
					status : orgStatus,
					deptHead : deptHead,
					deptLeader : deptLeader,
					deptAdministrator : deptAdministrator
				},
				url : rootPath + "/org/updateOrg",
				success : function(json) {
					if (json.code != "0") {
						orgTree.init();
						showSuccess('修改成功')
					} else {
						showErr('修改失败')
					}
				}

			});
		}
	});
});

/**
 * 左侧组织架构树模块
 */
var orgTree = (function() {
	// url
	var URLs = {
		listOrg : rootPath + "/org/listOrg"
	};
	// 树ID
	var treeName = 'orgTree';
	// zTree对象
	var tree = $("#" + treeName);
	// zTree设置
	var setting = {
		view : {
			addHoverDom : addHoverDom,
			removeHoverDom : removeHoverDom
		},
		data : {
			simpleData : {
				enable : true,
				idKey : 'id',
				pIdKey : 'parentId',
				rootPId : "0"
			}
		},
		callback : {
			onClick : onClick
		}
	};

	/**
	 * 点击菜单击事件
	 * 
	 * @param e
	 * @param treeId
	 *            树节点ID
	 * @param treeNode
	 *            树节点对象
	 */
	function onClick(e, treeId, treeNode) {
		// 判断组织信息div是否处于隐藏状态
		var isHidden = $("#orgInfo").is(":hidden");
		if (isHidden) {
			$("#orgInfo").show();
		}
		var zTree = $.fn.zTree.getZTreeObj(treeName), nodes = zTree.getSelectedNodes(), name = "", id = "", parentId = "", parentName = "", orgCode = "";
		status = "";
		nodes.sort(function compare(a, b) {
			return a.id - b.id;
		});
		for (var i = 0, l = nodes.length; i < l; i++) {
			name += nodes[i].name + ",";
			id += nodes[i].id + ",";
			orgCode += nodes[i].orgCode + ",";
			status += nodes[i].status + ",";
			if (nodes[i].getParentNode()) {
				parentId += nodes[i].getParentNode().id + ",";
				parentName += nodes[i].getParentNode().name + ",";
			} else {
				parentId += "0" + ","; // 根节点
			}
		}
		if (id.length > 0)
			id = id.substring(0, id.length - 1);
		if (name.length > 0)
			name = name.substring(0, name.length - 1);
		if (orgCode.length > 0)
			orgCode = orgCode.substring(0, orgCode.length - 1);
		if (parentId.length > 0)
			parentId = parentId.substring(0, parentId.length - 1);
		if (parentName.length > 0)
			parentName = parentName.substring(0, parentName.length - 1);
		if (status.length > 0)
			status = status.substring(0, status.length - 1);

		// 组织ID
		$("#orgId").val(id);
		// 组织编码
		$("#orgCode").html("").append("<p>" + orgCode + "</p>");
		// 组织名称
		$("#orgName").val(name);
		// 上级组织ID
		$("#parentId").val(parentId);
		// 上级组织名称
		$("#parentName").val(parentName);
		// 状态
		$("#orgStatus").val(nodes[0].orgStatus);
		// 部门主管
		$("#deptHead").val(nodes[0].deptHead);
		// 部门分管领导
		$("#deptLeader").val(nodes[0].deptLeader);
		// 部门管理员
		$("#deptAdministrator").val(nodes[0].deptAdministrator);
		sys.selectpicker({
			id : 'deptHead', // select的id
			url : rootPath + "/user/queryListUserByOrgId", // 请求数据的远程地址
			param : {}, // 过滤参数
			valueField : 'id',
			textField : 'userName',
			defaultValue : nodes[0].deptHead,
			width : '200px'
		});

		// 部门分管领导
		sys.selectpicker({
			id : 'deptLeader', // select的id
			url : rootPath + "/user/queryListUserByOrgId", // 请求数据的远程地址
			param : {}, // 过滤参数
			valueField : 'id',
			textField : 'userName',
			defaultValue : nodes[0].deptLeader,
			width : '200px'
		});

		// 部门管理员
		sys.selectpicker({
			id : 'deptAdministrator', // select的id
			url : rootPath + "/user/queryListUserByOrgId", // 请求数据的远程地址
			param : {}, // 过滤参数
			valueField : 'id',
			textField : 'userName',
			defaultValue : nodes[0].deptAdministrator,
			width : '200px'
		});
	}

	/**
	 * 鼠标经过节点时显示自定义按钮
	 */
	function addHoverDom(treeId, treeNode) {
		var aObj = $("#" + treeNode.tId + "_a");
		if ($("#addBtn_org_" + treeNode.id).length > 0) {
			return;
		}
//		if ($("#delBtn_org_" + treeNode.id).length > 0) {
//			return;
//		}
		var addStr = "<span id='addBtn_org_"
				+ treeNode.id
				+ "' class='button add' "
				+ " style='margin-right: 3px;margin-left:2px; background-position: -144px 0px;vertical-align: top;' title='增加' onfocus='this.blur();'></span>";
//				+ "<span id='delBtn_org_"
//				+ treeNode.id
//				+ "' class='button del' "
//				+ " style='margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle' title='删除' onfocus='this.blur(); onclick=\"javascript: doDelOrg("+treeNode.id+");\"'></span>";
		aObj.after(addStr); // 注意不要使用append
		var btnAdd = $("#addBtn_org_" + treeNode.id);
		if (btnAdd) {
			btnAdd.bind("click", function() {
				$("#optCode").val('');
				sys.showRemote(rootPath + '/org/toAddOrg?parentId=' + treeNode.id, function() {
					var success = $("#optCode").val(); // sys.dialog.getData("success");
					if (success == 1) {
						showSuccess('新增成功', function() {
							addBoxCancel();
							orgTree.init();
						});
					} else if (success == 0) {
						showErr('新增失败');
					}
				}, {
					title : '添加组织',
					width : 700,
					height : 600
				});

			});
		};
//		var delAdd = $("#delBtn_org_" + treeNode.id);
//		if (delAdd) {
//			btnAdd.bind("click", function() {
//				$.ajax({
//					url : rootPath + '/org/delOrg?id=' + treeNode.id,
//					async : false,
//					dataType : 'json',
//					type : 'post',
//					success : function(result) {
//						layer.msg(result.resultMsg);
//						if (result.resultCode == 1) {
//							orgTree.init();
//						}
//					}
//				});
//			});
//		}
	}

	/**
	 * 鼠标离开节点时删除自定义按钮
	 */
	function removeHoverDom(treeId, treeNode) {
		$("#addBtn_org_" + treeNode.id).unbind().remove();
		//$("#delBtn_org_" + treeNode.id).unbind().remove();
	}

	return {

		/**
		 * 创建组织树
		 * 
		 * @returns 返回初始化后的zTree对象
		 */
		init : function() {
			var nodes = [];
			/**
			 * 查询所有组织
			 */
			$.ajax({
				url : URLs.listOrg,
				async : false,
				dataType : 'json',
				type : 'post',
				success : function(result) {
					if (result.treeList != null) {
						$.each(result.treeList, function(index, row) {
							nodes.push({
								id : row.id,
								parentId : row.parentId,
								name : row.orgName,
								orgCode : row.orgCode,
								orgStatus : row.status,
								deptHead : row.deptHead,
								deptLeader : row.deptLeader,
								deptAdministrator : row.deptAdministrator
							});
						});
					}
				}
			});
			var treeObj = $.fn.zTree.init(tree, setting, nodes);
			// 全部展开
			treeObj.expandAll(true);
			return treeObj;
		}
	};
})();

/**
 * 删除
 * @Description do-something
 * @author xu_cc
 * @date 创建时间：2018年2月1日 下午5:41:48
 * @param id
 */
function doDelOrg() {
	showConfirm("确定删除该部门吗？", function() {
		$.ajax({
			type : 'POST',
			url : rootPath + "/org/delOrg",
			async : false,
			data : {
				id : id
			},
			dataType : 'json',
			success : function(data) {
				if (data.resultCode == "1") {
					showSuccess(data.resultMsg, function() {
						orgTree.init();
					});
				} else {
					showErr(data.resultMsg);
				}
			},
			error : function() {
				showErr("删除失败");
			}
		});
	});
}

/**
 * 组织菜单树模块
 */
var orgTreeMenu = (function() {
	var treeName = "treeMenu";
	var tree = $("#" + treeName);
	var orgContent = $("#orgContent");
	var pOrgNameObj = $("#parentName");
	var pIdObj = $("#parentId");

	var URLs = {
		listOrg : rootPath + "/org/listOrg"
	};
	var setting = {
		data : {
			simpleData : {
				enable : true,
				idKey : 'id',
				pIdKey : 'parentId',
				rootPId : "0"
			}
		},
		callback : {
			onClick : onClick
		}
	};

	/**
	 * 隐藏树按钮
	 */
	var hideTreeMenu = function() {
		orgContent.fadeOut("fast");
		$("body").unbind("mousedown", onBodyDown);
	}

	/**
	 * 显示藏树按钮
	 */
	var showTreeMenu = function() {
		var obj = pOrgNameObj;
		var offset = pOrgNameObj.offset();
		if (orgContent.is(":hidden")) {
			orgContent.css({
				left : offset.left - 10 + "px",
				top : offset.top + obj.outerHeight() + "px",
				width : obj.width() + 28 + "px"
			}).slideDown("fast");
			$("body").bind("mousedown", onBodyDown);
		} else {
			hideTreeMenu();
		}
	}

	/**
	 * body区域鼠标点击事件
	 */
	var onBodyDown = function(event) {
		if (!(event.target.id == "orgContent" || $(event.target).parents("#orgContent").length > 0)) {
			hideTreeMenu();
		}
	}

	/**
	 * 点击菜单树事件
	 */
	function onClick(e, treeId, treeNode) {
		var zTree = $.fn.zTree.getZTreeObj(treeName), nodes = zTree.getSelectedNodes(), name = "", id = "";
		nodes.sort(function compare(a, b) {
			return a.id - b.id;
		});
		for (var i = 0, l = nodes.length; i < l; i++) {
			name += nodes[i].name + ",";
			id += nodes[i].id + ",";
		}
		if (id.length > 0)
			id = id.substring(0, id.length - 1);
		if (name.length > 0)
			name = name.substring(0, name.length - 1);

		pOrgNameObj.val(name);
		pIdObj.val(id);
		hideTreeMenu();

	}
	;

	return {
		showTreeMenu : showTreeMenu,
		/**
		 * 创建组织树
		 * 
		 * @returns 返回初始化后的zTree对象
		 */
		init : function() {
			var nodes = [];
			/**
			 * 查询所有组织
			 */
			$.ajax({
				url : URLs.listOrg,
				async : false,
				dataType : 'json',
				type : 'post',
				success : function(result) {
					if (result.treeList != null) {
						$.each(result.treeList, function(index, row) {
							nodes.push({
								id : row.id,
								parentId : row.parentId,
								name : row.orgName
							});
						});
					}
				}
			});
			var treeObj = $.fn.zTree.init(tree, setting, nodes);
			// 全部展开
			treeObj.expandAll(true);
			return treeObj;
		}
	}
})();

/**
 * 取消按钮
 */
function addBoxCancel() {
	$("#addBox").hide();
}





/**
 * 删除部门
 * @Description do-something
 * @author xu_cc
 * @date 创建时间：2018年2月1日 下午5:48:01
 */
function doDelOrg() {
	var orgId = $("#orgId").val();
	if(orgId) {
		showConfirm("确定删除该部门吗？", function() {
			$.ajax({
				type : 'POST',
				url : rootPath + "/org/delOrg",
				async : false,
				data : {
					id : orgId
				},
				dataType : 'json',
				success : function(data) {
					if (data.resultCode == "1") {
						showSuccess(data.resultMsg, function() {
							orgTree.init();
						});
					} else {
						showErr(data.resultMsg);
					}
				},
				error : function() {
					showErr("删除失败");
				}
			});
		});
	}
}







